Many computing systems can present information to a user by displaying text on a screen or some other media, such as a printed page. The physical characteristics of the human visual system and the various types and qualities of electronic display or print technology offer unique challenges to a type designer when developing typefaces in which the text can be presented.
In typography, a typeface consists of a coordinated set of character designs. A typeface is usually comprised of an alphabet of letters, numerals, punctuation marks, ideograms, and symbols (collectively referred to as characters or glyphs). Arial, Times New Roman, Verdana, and Georgia are four examples of typefaces. Traditionally, the word “font” denotes a complete typeface in a particular size (usually measured in points), weight (e.g., light, book, bold, black), and orientation (e.g., roman, italic, oblique). For a given typeface, each character typically corresponds to a single glyph, although certain characters of some typefaces may include multiple glyphs and are referred to as “composite” characters.
Generally, a glyph outline definition specifies a series of points and/or contours. A simple glyph outline may have only one contour whereas a complex glyph may have two or more contours. Furthermore, certain control characters with no visual manifestation map to glyphs with no contours.
When a glyph is to be rendered, the glyph outline is read from a font file and scaled to a specified font size (e.g., 12 point) and display resolution (e.g., 72 dpi or dots per inch). The scaled outline is then altered by font hinting instructions to correct any perceived errors introduced by the scaling process, where the interaction of font size and display resolution can result in rounding error and introduce unintended and unwanted distortion to the glyph outline. Exemplary errors may include without limitation drop-outs (i.e., unintended gaps in the glyph), unintended variations in stroke weights or character heights, etc.
Composite characters present special problems for character generation and font hinting efforts. Component glyphs are assembled into a composite character in accordance with one or more typographically irrelevant offsets to position the components relative to each other. The components of the composite character, along with the one or more typographically irrelevant offsets, are then individually scaled in accordance with a specified size and display resolution. The scaling and rounding of the one or more typographically irrelevant offsets can introduce errors, including without limitation improper spacing and/or alignment of the components relative to each other.